package com.eduplatform.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.eduplatform.dto.AIMaterialGenerateDTO;
import com.eduplatform.dto.MaterialDTO;
import com.eduplatform.entity.Material;

import java.util.List;

/**
 * 课件笔记服务接口
 */
public interface MaterialService extends IService<Material> {

    /**
     * 分页查询课件笔记列表
     * 
     * @param page           页码
     * @param size           每页大小
     * @param keyword        关键字
     * @param type           类型
     * @param educationLevel 教育阶段
     * @param subjectId      学科ID
     * @param schoolId       学校ID
     * @return 分页结果
     */
    Page<MaterialDTO> listMaterials(int page, int size, String keyword, Integer type, Integer educationLevel,
            Long subjectId, Long schoolId);

    /**
     * 获取课件笔记详情
     * 
     * @param id 课件笔记ID
     * @return 课件笔记详情
     */
    MaterialDTO getMaterialById(Long id);

    /**
     * 添加课件笔记
     * 
     * @param materialDTO 课件笔记DTO
     * @return 是否成功
     */
    boolean addMaterial(MaterialDTO materialDTO);

    /**
     * 更新课件笔记
     * 
     * @param materialDTO 课件笔记DTO
     * @return 是否成功
     */
    boolean updateMaterial(MaterialDTO materialDTO);

    /**
     * 删除课件笔记
     * 
     * @param id 课件笔记ID
     * @return 是否成功
     */
    boolean deleteMaterial(Long id);

    /**
     * 使用AI生成课件/笔记
     * 
     * @param generateDTO 生成参数
     * @param userId      用户ID
     * @return 生成的课件/笔记
     */
    MaterialDTO generateAIMaterial(AIMaterialGenerateDTO generateDTO, Long userId);
}